package ace.module.weixin.api.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import jakarta.validation.constraints.*;
import jakarta.annotation.Nullable;
import java.io.Serializable;

/**
* 微信小程序配置 data transform object.
*
* @author Caspar
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = WxsMiniAppConfigDto.TABLE_DESC)
public class WxsMiniAppConfigDto implements Serializable {

  public static final String TABLE_NAME = "wxs_mini_app_config";
  public static final String TABLE_DESC = "微信小程序配置";
  public static final String ID_COLUMN_NAME = "id";
  public static final String ID_TITLE = "id";
  public static final String ID_DESC = "";
  public static final String APP_ID_COLUMN_NAME = "app_id";
  public static final String APP_ID_TITLE = "小程序应用id";
  public static final String APP_ID_DESC = "";
  public static final String APP_SECRET_COLUMN_NAME = "app_secret";
  public static final String APP_SECRET_TITLE = "小程序应用密钥";
  public static final String APP_SECRET_DESC = "";
  public static final String TOKEN_COLUMN_NAME = "token";
  public static final String TOKEN_TITLE = "设置微信小程序消息服务器配置的token";
  public static final String TOKEN_DESC = "";
  public static final String AES_KEY_COLUMN_NAME = "aes_key";
  public static final String AES_KEY_TITLE = "设置微信小程序消息服务器配置的EncodingAESKey";
  public static final String AES_KEY_DESC = "";
  public static final String MSG_DATA_FORMAT_COLUMN_NAME = "msg_data_format";
  public static final String MSG_DATA_FORMAT_TITLE = "消息格式，XML或者JSON";
  public static final String MSG_DATA_FORMAT_DESC = "";
  public static final String ORIGINAL_ID_COLUMN_NAME = "original_id";
  public static final String ORIGINAL_ID_TITLE = "小程序原始id";
  public static final String ORIGINAL_ID_DESC = "";
  public static final String HTTP_PROXY_HOST_COLUMN_NAME = "http_proxy_host";
  public static final String HTTP_PROXY_HOST_TITLE = "http代理主机";
  public static final String HTTP_PROXY_HOST_DESC = "";
  public static final String HTTP_PROXY_PORT_COLUMN_NAME = "http_proxy_port";
  public static final String HTTP_PROXY_PORT_TITLE = "http代理主机端口";
  public static final String HTTP_PROXY_PORT_DESC = "";
  public static final String HTTP_PROXY_USERNAME_COLUMN_NAME = "http_proxy_username";
  public static final String HTTP_PROXY_USERNAME_TITLE = "http代理账户";
  public static final String HTTP_PROXY_USERNAME_DESC = "";
  public static final String HTTP_PROXY_PASSWORD_COLUMN_NAME = "http_proxy_password";
  public static final String HTTP_PROXY_PASSWORD_TITLE = "http代理密码";
  public static final String HTTP_PROXY_PASSWORD_DESC = "";
  public static final String API_HOST_URL_COLUMN_NAME = "api_host_url";
  public static final String API_HOST_URL_TITLE = "自定义的apiHost地址";
  public static final String API_HOST_URL_DESC = "";
  public static final String ACCESS_TOKEN_URL_COLUMN_NAME = "access_token_url";
  public static final String ACCESS_TOKEN_URL_TITLE = "自定义的获取accessToken地址";
  public static final String ACCESS_TOKEN_URL_DESC = "";
  public static final String NAME_COLUMN_NAME = "name";
  public static final String NAME_TITLE = "名称";
  public static final String NAME_DESC = "";
  public static final String REMARK_COLUMN_NAME = "remark";
  public static final String REMARK_TITLE = "备注";
  public static final String REMARK_DESC = "";
  public static final String STATUS_COLUMN_NAME = "status";
  public static final String STATUS_TITLE = "状态";
  public static final String STATUS_DESC = " 1-正常 2-锁定";
  public static final String DELETE_FLAG_COLUMN_NAME = "delete_flag";
  public static final String DELETE_FLAG_TITLE = "删除标识";
  public static final String DELETE_FLAG_DESC = "0-未删除";
  public static final String CREATE_TIME_COLUMN_NAME = "create_time";
  public static final String CREATE_TIME_TITLE = "创建时间";
  public static final String CREATE_TIME_DESC = "单位-毫秒";
  public static final String UPDATE_TIME_COLUMN_NAME = "update_time";
  public static final String UPDATE_TIME_TITLE = "更新时间";
  public static final String UPDATE_TIME_DESC = "单位-毫秒";
  public static final String ROW_VERSION_COLUMN_NAME = "row_version";
  public static final String ROW_VERSION_TITLE = "版本号和乐观锁";
  public static final String ROW_VERSION_DESC = "";

  @Schema(title = ID_TITLE, description = ID_DESC)
  private Long id;

  @Size(max = 255)
  @Schema(title = APP_ID_TITLE, description = APP_ID_DESC)
  private String appId;

  @Size(max = 255)
  @Schema(title = APP_SECRET_TITLE, description = APP_SECRET_DESC)
  private String appSecret;

  @Size(max = 255)
  @Schema(title = TOKEN_TITLE, description = TOKEN_DESC)
  private String token;

  @Size(max = 255)
  @Schema(title = AES_KEY_TITLE, description = AES_KEY_DESC)
  private String aesKey;

  @Size(max = 255)
  @Schema(title = MSG_DATA_FORMAT_TITLE, description = MSG_DATA_FORMAT_DESC)
  private String msgDataFormat;

  @Size(max = 255)
  @Schema(title = ORIGINAL_ID_TITLE, description = ORIGINAL_ID_DESC)
  private String originalId;

  @Size(max = 255)
  @Schema(title = HTTP_PROXY_HOST_TITLE, description = HTTP_PROXY_HOST_DESC)
  private String httpProxyHost;

  @Schema(title = HTTP_PROXY_PORT_TITLE, description = HTTP_PROXY_PORT_DESC)
  private Integer httpProxyPort;

  @Size(max = 255)
  @Schema(title = HTTP_PROXY_USERNAME_TITLE, description = HTTP_PROXY_USERNAME_DESC)
  private String httpProxyUsername;

  @Size(max = 255)
  @Schema(title = HTTP_PROXY_PASSWORD_TITLE, description = HTTP_PROXY_PASSWORD_DESC)
  private String httpProxyPassword;

  @Size(max = 255)
  @Schema(title = API_HOST_URL_TITLE, description = API_HOST_URL_DESC)
  private String apiHostUrl;

  @Size(max = 255)
  @Schema(title = ACCESS_TOKEN_URL_TITLE, description = ACCESS_TOKEN_URL_DESC)
  private String accessTokenUrl;

  @Size(max = 255)
  @Schema(title = NAME_TITLE, description = NAME_DESC)
  private String name;

  @Size(max = 255)
  @Schema(title = REMARK_TITLE, description = REMARK_DESC)
  private String remark;

  @Schema(title = STATUS_TITLE, description = STATUS_DESC)
  private Integer status;

  @Schema(title = DELETE_FLAG_TITLE, description = DELETE_FLAG_DESC)
  private Long deleteFlag;

  @Schema(title = CREATE_TIME_TITLE, description = CREATE_TIME_DESC)
  private Long createTime;

  @Schema(title = UPDATE_TIME_TITLE, description = UPDATE_TIME_DESC)
  private Long updateTime;

  @Schema(title = ROW_VERSION_TITLE, description = ROW_VERSION_DESC)
  private Long rowVersion;

}